package top.chmin.project.cloud.common;

/**
 * chmin
 * 2024/1/11 10:53
 * cloud-code
 */
public class StringModelColumn<T extends Condition> extends ConditionColumn<T> {
    private final String value;

    public StringModelColumn(T t, String fieldName, String value) {
        super(t, fieldName);
        this.value = value;
    }

    public T eq() {
        if (value == null) return t;
        t.getWhereList().add(columnName + " = ?");
        t.getWhereValueList().add(value);
        return t;
    }

    public T ne() {
        if (value == null) return t;
        t.getWhereList().add(columnName + " <> ?");
        t.getWhereValueList().add(value);
        return t;
    }

    public T like() {
        if (value == null) return t;
        t.getWhereList().add(columnName + " like CONCAT('%%', ?, '%%')");
        t.getWhereValueList().add(value);
        return t;
    }

    public T leftLike() {
        if (value == null) return t;
        t.getWhereList().add(columnName + " like CONCAT(?, '%%')");
        t.getWhereValueList().add(value);
        return t;
    }

    public T rightLike() {
        if (value == null) return t;
        t.getWhereList().add(columnName + " like CONCAT('%%', ?)");
        t.getWhereValueList().add(value);
        return t;
    }

    public T group() {
        t.getGroupList().add(columnName);
        return t;
    }

    public T asc() {
        t.getOrderList().add(columnName);
        return t;
    }

    public T desc() {
        t.getOrderList().add(columnName + " DESC");
        return t;
    }
}
